The present invention relates generally to data migration and relates more specifically to the migration of distributed, complex multi-tier applications.
FIG. 1 is a block diagram illustrating an exemplary distributed, complex multi-tier application (“Target Application”) operating in a first environment (“Environment A”). As illustrated, a distributed, complex multi-tier application is an application in which presentation, application processing, and data management are performed as logically separate processes over multiple cooperating servers (e.g., “Servers A-D”). These servers might include, for example, one or more hypertext transfer protocol (HTTP) servers, application servers, and/or relational database management systems.
When a distributed, complex multi-tier application is to be migrated to a new environment (e.g., a cloud environment), it is often difficult to estimate the resources necessary to ensure that the application's performance in the new environment matches its performance in the old environment. It is also non-trivial to project the application's performance for workloads that are heavier than those it has already encountered. For instance, in FIG. 1, Environment A has access to a first set of resources including, but not limited to, processing, memory, and hardware resources. Supported by the first set of resources, the Target Application may be capable of processing fifty-eight requests per second. However, it is unknown what the Target Application's performance might be if the Target Application were to be migrated to Environment B, which has access to a different, second set of resources.
Although the Target Application could be directly installed in Environment B and evaluated accordingly, this approach is not ideal for several reasons. For one, installation is complicated by the subtle interdependencies between the application tiers, potentially complex configurations, and application specific treatments. Moreover, it is costly and labor-intensive to migrate and store all of the data associated with a distributed, complex multi-tier application. Finally, if the Target Application is to be migrated to multiple new environments, all of the above complications will apply in each new environment.